package model

import (
	"time"
)

type AdminMenu struct {
	Id       int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	ParentId int    `json:"parent_id" xorm:"default 0 INT(11)"`
	Title    string `json:"title" xorm:"VARCHAR(24)"`
	Url      string `json:"url" xorm:"VARCHAR(45)"`
	Icon     string `json:"icon" xorm:"VARCHAR(45)"`
	Enabled  string `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	Top      int    `json:"top" xorm:"not null default 0 index SMALLINT(5)"`
	IsAdmin  string `json:"is_admin" xorm:"default '0' ENUM('0','1')"`
}

type AdminPower struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	ParentId   int       `json:"parent_id" xorm:"default 0 INT(11)"`
	Name       string    `json:"name" xorm:"not null VARCHAR(24)"`
	Key        string    `json:"key" xorm:"VARCHAR(64)"`
	Enabled    string    `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type AdminRole struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Name       string    `json:"name" xorm:"not null VARCHAR(64)"`
	Enabled    string    `json:"enabled" xorm:"not null default '1' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type AdminRolePower struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	RoleId     int       `json:"role_id" xorm:"not null INT(11)"`
	PowerId    int       `json:"power_id" xorm:"not null INT(11)"`
	PowerType  int       `json:"power_type" xorm:"TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type AdminUser struct {
	Uid        int       `json:"uid" xorm:"not null pk autoincr INT(11)"`
	Username   string    `json:"username" xorm:"VARCHAR(32)"`
	PwdRand    string    `json:"pwd_rand" xorm:"VARCHAR(64)"`
	Password   string    `json:"password" xorm:"VARCHAR(64)"`
	Enabled    string    `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type AdminUserRole struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null INT(11)"`
	RoleId     int       `json:"role_id" xorm:"not null INT(11)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"not null default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type Announcement struct {
	Id              int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	AddressSource   string    `json:"address_source" xorm:"not null default '' CHAR(100)"`
	PlatformSource  string    `json:"platform_source" xorm:"not null default 'block.cc' CHAR(40)"`
	Exchange        string    `json:"exchange" xorm:"not null default '' CHAR(30)"`
	Coin            string    `json:"coin" xorm:"not null default '' CHAR(10)"`
	Title           string    `json:"title" xorm:"not null default '' CHAR(200)"`
	OriginalAddress string    `json:"original_address" xorm:"not null default '' CHAR(255)"`
	Content         string    `json:"content" xorm:"not null default '' VARCHAR(1500)"`
	Status          int       `json:"status" xorm:"not null default 1 TINYINT(1)"`
	IsDel           int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
	CreateTime      time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime      time.Time `json:"update_time" xorm:"TIMESTAMP"`
	CreateIp        string    `json:"create_ip" xorm:"CHAR(15)"`
	UpdateIp        string    `json:"update_ip" xorm:"CHAR(15)"`
}

type AppConfig struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Name       string    `json:"name" xorm:"VARCHAR(24)"`
	Key        string    `json:"key" xorm:"not null default '' VARCHAR(24)"`
	Value      string    `json:"value" xorm:"not null default '' VARCHAR(250)"`
	Enabled    string    `json:"enabled" xorm:"not null default '0' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type AppInfo struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Title      string    `json:"title" xorm:"VARCHAR(24)"`
	Key        string    `json:"key" xorm:"VARCHAR(24)"`
	Value      string    `json:"value" xorm:"VARCHAR(128)"`
	Enabled    string    `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type AppMessage struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Title      string    `json:"title" xorm:"VARCHAR(128)"`
	Content    string    `json:"content" xorm:"VARCHAR(250)"`
	Enabled    string    `json:"enabled" xorm:"default '0' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type AppVersion struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	AppName     string    `json:"app_name" xorm:"not null default '' VARCHAR(24)"`
	Type        string    `json:"type" xorm:"not null default 'android' VARCHAR(24)"`
	Version     string    `json:"version" xorm:"not null default '' VARCHAR(24)"`
	NoteCn      string    `json:"note_cn" xorm:"not null default '' VARCHAR(250)"`
	NoteEn      string    `json:"note_en" xorm:"VARCHAR(250)"`
	NoteTw      string    `json:"note_tw" xorm:"VARCHAR(250)"`
	Download    string    `json:"download" xorm:"not null default '' VARCHAR(250)"`
	ForceUpdate string    `json:"force_update" xorm:"not null default '0' ENUM('0','1')"`
	Enabled     string    `json:"enabled" xorm:"default '0' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type Badword struct {
	Id   int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	Word string `json:"word" xorm:"index VARCHAR(128)"`
}

type Banner struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	AddressCn  string    `json:"address_cn" xorm:"not null default '' CHAR(240)"`
	AddressEn  string    `json:"address_en" xorm:"not null default '' CHAR(240)"`
	AddressTw  string    `json:"address_tw" xorm:"not null default '' CHAR(240)"`
	ImageCn    string    `json:"image_cn" xorm:"not null default '' CHAR(240)"`
	ImageEn    string    `json:"image_en" xorm:"not null default '' CHAR(240)"`
	ImageTw    string    `json:"image_tw" xorm:"not null default '' CHAR(240)"`
	Sort       int       `json:"sort" xorm:"not null default 1 INT(11)"`
	IsDel      int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
}

type CmcCoin struct {
	Id           int    `json:"id" xorm:"not null pk INT(11)"`
	Name         string `json:"name" xorm:"not null default '' VARCHAR(32)"`
	Symbol       string `json:"symbol" xorm:"not null default '' CHAR(16)"`
	Slug         string `json:"slug" xorm:"not null default '' VARCHAR(32)"`
	IsActive     int    `json:"is_active" xorm:"not null default 1 TINYINT(1)"`
	Category     string `json:"category" xorm:"not null default '' VARCHAR(256)"`
	Logo         string `json:"logo" xorm:"not null default '' VARCHAR(256)"`
	Tags         string `json:"tags" xorm:"not null default '' VARCHAR(256)"`
	Website      string `json:"website" xorm:"not null default '' VARCHAR(256)"`
	Explorer     string `json:"explorer" xorm:"not null default '' VARCHAR(256)"`
	SourceCode   string `json:"source_code" xorm:"not null default '' VARCHAR(256)"`
	MessageBoard string `json:"message_board" xorm:"not null default '' VARCHAR(256)"`
	Chat         string `json:"chat" xorm:"not null default '' VARCHAR(256)"`
	Announcement string `json:"announcement" xorm:"not null default '' VARCHAR(256)"`
	Reddit       string `json:"reddit" xorm:"not null default '' VARCHAR(256)"`
	Twitter      string `json:"twitter" xorm:"not null default '' VARCHAR(256)"`
}

type CmcExchange struct {
	Id       int    `json:"id" xorm:"not null pk INT(11)"`
	Name     string `json:"name" xorm:"not null default '' VARCHAR(32)"`
	Slug     string `json:"slug" xorm:"not null default '' VARCHAR(32)"`
	Logo     string `json:"logo" xorm:"not null default '' VARCHAR(256)"`
	Website  string `json:"website" xorm:"not null default '' VARCHAR(256)"`
	Twitter  string `json:"twitter" xorm:"not null default '' VARCHAR(256)"`
	Blog     string `json:"blog" xorm:"not null default '' VARCHAR(256)"`
	Chat     string `json:"chat" xorm:"not null default '' VARCHAR(256)"`
	Fee      string `json:"fee" xorm:"not null default '' VARCHAR(256)"`
	IsActive int    `json:"is_active" xorm:"not null default 1 TINYINT(1)"`
}

type Coin struct {
	Id                int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Mid               int       `json:"mid" xorm:"default 0 index INT(10)"`
	NameEn            string    `json:"name_en" xorm:"default '' VARCHAR(32)"`
	NameCn            string    `json:"name_cn" xorm:"default '' VARCHAR(32)"`
	Symbol            string    `json:"symbol" xorm:"default '' VARCHAR(16)"`
	Slug              string    `json:"slug" xorm:"default '' index VARCHAR(32)"`
	Description       string    `json:"description" xorm:"default '' VARCHAR(1024)"`
	Category          string    `json:"category" xorm:"default '' VARCHAR(256)"`
	Tags              string    `json:"tags" xorm:"default '' VARCHAR(256)"`
	Country           string    `json:"country" xorm:"default '' VARCHAR(64)"`
	DateAdded         string    `json:"date_added" xorm:"default '' CHAR(10)"`
	MaxSupply         string    `json:"max_supply" xorm:"default 0.00 DECIMAL(40,2)"`
	CirculatingSupply string    `json:"circulating_supply" xorm:"default 0.00 DECIMAL(40,2)"`
	Logo              string    `json:"logo" xorm:"default '' VARCHAR(256)"`
	Website           string    `json:"website" xorm:"default '' VARCHAR(256)"`
	Explorer          string    `json:"explorer" xorm:"default '' VARCHAR(256)"`
	SourceCode        string    `json:"source_code" xorm:"default '' VARCHAR(256)"`
	MessageBoard      string    `json:"message_board" xorm:"default '' VARCHAR(256)"`
	Chat              string    `json:"chat" xorm:"default '' VARCHAR(256)"`
	Announcement      string    `json:"announcement" xorm:"default '' VARCHAR(256)"`
	Reddit            string    `json:"reddit" xorm:"default '' VARCHAR(256)"`
	Twitter           string    `json:"twitter" xorm:"default '' VARCHAR(256)"`
	WhitePaper        string    `json:"white_paper" xorm:"default '' VARCHAR(256)"`
	Sort              int       `json:"sort" xorm:"default 0 index SMALLINT(5)"`
	Enable            int       `json:"enable" xorm:"default 0 TINYINT(1)"`
	CreateTime        time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime        time.Time `json:"update_time" xorm:"DATETIME"`
}

type CoinLike struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null default 0 index INT(10)"`
	CoinId     int       `json:"coin_id" xorm:"not null default 0 INT(10)"`
	CoinMid    int       `json:"coin_mid" xorm:"not null default 0 INT(10)"`
	CoinSymbol string    `json:"coin_symbol" xorm:"not null default '' VARCHAR(32)"`
	CreateTime time.Time `json:"create_time" xorm:"not null TIMESTAMP"`
	UpdateTime time.Time `json:"update_time" xorm:"not null TIMESTAMP"`
}

type CoinSearchTag struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Keyword    string    `json:"keyword" xorm:"not null default '' VARCHAR(32)"`
	Sort       int       `json:"sort" xorm:"not null default 0 INT(11)"`
	CreateTime time.Time `json:"create_time" xorm:"TIMESTAMP"`
}

type CoinTicker struct {
	Id                int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Mid               int       `json:"mid" xorm:"not null INT(10)"`
	Symbol            string    `json:"symbol" xorm:"not null default '' CHAR(16)"`
	Open              string    `json:"open" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	High              string    `json:"high" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Low               string    `json:"low" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Close             string    `json:"close" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Volume            string    `json:"volume" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Amount            string    `json:"amount" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Percent           string    `json:"percent" xorm:"not null default 0.0000 DECIMAL(10,4)"`
	TotoalSupply      string    `json:"totoal_supply" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	CirculatingSupply string    `json:"circulating_supply" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	MarketValue       string    `json:"market_value" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	NumMarketPairs    int       `json:"num_market_pairs" xorm:"not null default 0 INT(10)"`
	NumExchange       int       `json:"num_exchange" xorm:"not null default 0 INT(10)"`
	TurnoverRate      string    `json:"turnover_rate" xorm:"not null default 0.0000 DECIMAL(10,4)"`
	Cny               string    `json:"cny" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	Usd               string    `json:"usd" xorm:"not null default 0.00000000 DECIMAL(40,8)"`
	LastUpdated       time.Time `json:"last_updated" xorm:"TIMESTAMP"`
}

type Combination struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Nick       string    `json:"nick" xorm:"not null default '' CHAR(15)"`
	Username   string    `json:"username" xorm:"not null default '' CHAR(20)"`
	IsDel      int       `json:"is_del" xorm:"not null default 0 TINYINT(11)"`
	Type       int       `json:"type" xorm:"not null default 0 TINYINT(1)"`
	Reward     int       `json:"reward" xorm:"not null default 0 SMALLINT(5)"`
	Uid        int       `json:"uid" xorm:"not null default 0 INT(11)"`
	Profit     string    `json:"profit" xorm:"not null default 0.00 DECIMAL(6,2)"`
	Asset      string    `json:"asset" xorm:"not null default 1000000.00 DECIMAL(20,2)"`
	OverAsset  string    `json:"over_asset" xorm:"not null default 1000000.00 DECIMAL(20,2)"`
	NetWorth   string    `json:"net_worth" xorm:"not null default 1000000.00 DECIMAL(20,2)"`
	Content    string    `json:"content" xorm:"not null default '' CHAR(255)"`
	Ranking    int       `json:"ranking" xorm:"not null default 0 SMALLINT(5)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdaeTime  time.Time `json:"updae_time" xorm:"TIMESTAMP"`
	CreateIp   string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp   string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
}

type CombinationFollow struct {
	Id            int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid           int       `json:"uid" xorm:"not null default 0 INT(11)"`
	CombinationId int       `json:"combination_id" xorm:"not null INT(11)"`
	Follow        int       `json:"follow" xorm:"not null default 0 TINYINT(1)"`
	CreateTime    time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdaeTime     time.Time `json:"updae_time" xorm:"TIMESTAMP"`
	CreateIp      string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp      string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
}

type Currency struct {
	Id        int    `json:"id" xorm:"not null pk autoincr SMALLINT(5)"`
	Name      string `json:"name" xorm:"not null default '' VARCHAR(64)"`
	Nameshort string `json:"nameshort" xorm:"not null default '' VARCHAR(32)"`
	Symbol    string `json:"symbol" xorm:"not null default '' VARCHAR(16)"`
	CountryId int    `json:"country_id" xorm:"not null default 0 INT(11)"`
	Status    int    `json:"status" xorm:"not null default 0 TINYINT(1)"`
}

type CurrencyPair struct {
	Id     int    `json:"id" xorm:"not null pk autoincr SMALLINT(5)"`
	Scur   string `json:"scur" xorm:"not null default '' CHAR(16)"`
	Tcur   string `json:"tcur" xorm:"not null default '' CHAR(16)"`
	Status int    `json:"status" xorm:"not null default 1 TINYINT(1)"`
}

type CurrencyRate struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Scur       string    `json:"scur" xorm:"not null default '' CHAR(10)"`
	Tcur       string    `json:"tcur" xorm:"not null default '' CHAR(10)"`
	Rate       string    `json:"rate" xorm:"not null default 0.000000 DECIMAL(12,6)"`
	CreateTime time.Time `json:"create_time" xorm:"not null index DATETIME"`
}

type Exchange struct {
	Id            int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Mid           int       `json:"mid" xorm:"not null default 0 unique INT(11)"`
	NameEn        string    `json:"name_en" xorm:"not null default '' VARCHAR(32)"`
	NameCn        string    `json:"name_cn" xorm:"not null default '' VARCHAR(32)"`
	Slug          string    `json:"slug" xorm:"not null default '' VARCHAR(32)"`
	Logo          string    `json:"logo" xorm:"not null default '' VARCHAR(256)"`
	Mode          string    `json:"mode" xorm:"not null default '' VARCHAR(256)"`
	Description   string    `json:"description" xorm:"not null default '' VARCHAR(2048)"`
	Country       string    `json:"country" xorm:"not null default '' VARCHAR(32)"`
	Website       string    `json:"website" xorm:"not null default '' VARCHAR(256)"`
	Twitter       string    `json:"twitter" xorm:"not null default '' VARCHAR(256)"`
	Blog          string    `json:"blog" xorm:"not null default '' VARCHAR(256)"`
	Chat          string    `json:"chat" xorm:"not null default '' VARCHAR(256)"`
	Fee           string    `json:"fee" xorm:"not null default '' VARCHAR(256)"`
	Enable        int       `json:"enable" xorm:"not null default 0 index TINYINT(1)"`
	Sort          int       `json:"sort" xorm:"not null default 0 INT(10)"`
	Recommend     int       `json:"recommend" xorm:"not null default 0 TINYINT(1)"`
	RecommendSort int       `json:"recommend_sort" xorm:"not null default 0 INT(10)"`
	CreateTime    time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime    time.Time `json:"update_time" xorm:"not null DATETIME"`
}

type ExchangePair struct {
	Id             int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	ExchangeMid    int       `json:"exchange_mid" xorm:"not null default 0 index INT(10)"`
	ExchangeSlug   string    `json:"exchange_slug" xorm:"not null default '' VARCHAR(32)"`
	Symbol         string    `json:"symbol" xorm:"not null default '' VARCHAR(64)"`
	SymbolBase     string    `json:"symbol_base" xorm:"not null default '' VARCHAR(32)"`
	SymbolBaseMid  int       `json:"symbol_base_mid" xorm:"not null INT(11)"`
	SymbolQuote    string    `json:"symbol_quote" xorm:"not null default '' VARCHAR(32)"`
	SymbolQuoteMid int       `json:"symbol_quote_mid" xorm:"not null INT(11)"`
	Enable         int       `json:"enable" xorm:"not null default 1 TINYINT(1)"`
	CreateTime     time.Time `json:"create_time" xorm:"not null TIMESTAMP"`
	UpdateTime     time.Time `json:"update_time" xorm:"not null TIMESTAMP"`
}

type GmsEmailSend struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Subject     string    `json:"subject" xorm:"not null default '' VARCHAR(128)"`
	Html        string    `json:"html" xorm:"not null TEXT"`
	Code        string    `json:"code" xorm:"VARCHAR(24)"`
	From        string    `json:"from" xorm:"not null default '' VARCHAR(128)"`
	To          string    `json:"to" xorm:"not null default '' VARCHAR(128)"`
	EmailServer string    `json:"email_server" xorm:"not null default '' VARCHAR(24)"`
	Status      int       `json:"status" xorm:"not null default 0 TINYINT(2)"`
	Result      string    `json:"result" xorm:"VARCHAR(250)"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type GmsEmailTemplate struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Sign       string    `json:"sign" xorm:"not null default '' VARCHAR(24)"`
	Lang       string    `json:"lang" xorm:"not null default '' VARCHAR(24)"`
	Name       string    `json:"name" xorm:"not null default '' VARCHAR(24)"`
	Subject    string    `json:"subject" xorm:"not null default '' VARCHAR(128)"`
	Html       string    `json:"html" xorm:"not null TEXT"`
	Enabled    string    `json:"enabled" xorm:"not null default '0' ENUM('0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type GmsSmsPrefix struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	IsoCode     string    `json:"iso_code" xorm:"VARCHAR(12)"`
	CountryName string    `json:"country_name" xorm:"VARCHAR(128)"`
	CountryCode string    `json:"country_code" xorm:"VARCHAR(12)"`
	Enabled     string    `json:"enabled" xorm:"default '1' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type GmsSmsSend struct {
	Id           int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	TemplateCode string    `json:"template_code" xorm:"not null default '' VARCHAR(128)"`
	Prefix       string    `json:"prefix" xorm:"not null default '' VARCHAR(24)"`
	Phone        string    `json:"phone" xorm:"not null default '' VARCHAR(48)"`
	Message      string    `json:"message" xorm:"not null default '' VARCHAR(250)"`
	Status       int       `json:"status" xorm:"not null default 0 TINYINT(2)"`
	SmsServer    string    `json:"sms_server" xorm:"VARCHAR(24)"`
	Response     string    `json:"response" xorm:"VARCHAR(250)"`
	CreateTime   time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime   time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type GmsSmsTemplate struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Sign        string    `json:"sign" xorm:"not null default '' VARCHAR(24)"`
	Lang        string    `json:"lang" xorm:"not null default '' VARCHAR(24)"`
	Name        string    `json:"name" xorm:"not null default '' VARCHAR(24)"`
	TempCode    string    `json:"temp_code" xorm:"not null default '' VARCHAR(64)"`
	TempContent string    `json:"temp_content" xorm:"not null default '' VARCHAR(250)"`
	Enabled     string    `json:"enabled" xorm:"not null default '1' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type IpBlackList struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Ip         string    `json:"ip" xorm:"VARCHAR(24)"`
	Status     int       `json:"status" xorm:"default 1 TINYINT(2)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type KlineBitz struct {
	Id        int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	Exchange  string `json:"exchange" xorm:"not null default '' unique(Index_e_s_t) VARCHAR(16)"`
	Symbol    string `json:"symbol" xorm:"not null default '' unique(Index_e_s_t) VARCHAR(32)"`
	CoinBase  string `json:"coin_base" xorm:"not null default '' VARCHAR(16)"`
	CoinQuote string `json:"coin_quote" xorm:"not null default '' VARCHAR(16)"`
	Time      string `json:"time" xorm:"not null default '' unique(Index_e_s_t) index CHAR(13)"`
	Open      string `json:"open" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	High      string `json:"high" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Low       string `json:"low" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Close     string `json:"close" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Volume    string `json:"volume" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Datetime  string `json:"datetime" xorm:"not null default '' VARCHAR(32)"`
}

type News struct {
	Id             int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	AddressSource  string    `json:"address_source" xorm:"not null default '' CHAR(100)"`
	PlatformSource string    `json:"platform_source" xorm:"not null default 'block.cc' CHAR(40)"`
	Type           int       `json:"type" xorm:"not null default 0 TINYINT(2)"`
	IsDel          int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
	Title          string    `json:"title" xorm:"not null default '' CHAR(200)"`
	Content        string    `json:"content" xorm:"not null TEXT"`
	IsHeadlines    int       `json:"is_headlines" xorm:"not null default 0 TINYINT(1)"`
	Follow         int       `json:"follow" xorm:"not null default 0 SMALLINT(5)"`
	Good           int       `json:"good" xorm:"not null default 0 MEDIUMINT(9)"`
	Thumbnail      string    `json:"thumbnail" xorm:"not null default '' CHAR(100)"`
	Author         string    `json:"author" xorm:"not null default '' CHAR(20)"`
	ReadNumber     int       `json:"read_number" xorm:"not null default 0 MEDIUMINT(5)"`
	Description    string    `json:"description" xorm:"not null default '' VARCHAR(2000)"`
	Status         int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	Forward        int       `json:"forward" xorm:"not null default 0 MEDIUMINT(5)"`
	CreateIp       string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp       string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	CreateTime     time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime     time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type NewsCategory struct {
	Id         int       `json:"id" xorm:"not null pk autoincr SMALLINT(11)"`
	Name       string    `json:"name" xorm:"not null default '' CHAR(20)"`
	IsDel      int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
	Sort       int       `json:"sort" xorm:"not null default 0 SMALLINT(3)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type NewsComment struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null default 0 INT(11)"`
	Username   string    `json:"username" xorm:"not null default '' CHAR(20)"`
	NewsId     int       `json:"news_id" xorm:"not null default 0 INT(11)"`
	ParentId   int       `json:"parent_id" xorm:"default 0 INT(11)"`
	Content    string    `json:"content" xorm:"not null default '' VARCHAR(600)"`
	IsDel      int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
	Status     int       `json:"status" xorm:"not null default 0 TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	CreateIp   string    `json:"create_ip" xorm:"default '0.0.0.0' CHAR(15)"`
}

type NewsFlash struct {
	Id             int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	PlatformSource string    `json:"platform_source" xorm:"not null default '' CHAR(40)"`
	Title          string    `json:"title" xorm:"not null default '' CHAR(100)"`
	Status         int       `json:"status" xorm:"not null default 1 TINYINT(1)"`
	Content        string    `json:"content" xorm:"not null default '' VARCHAR(1000)"`
	Author         string    `json:"author" xorm:"not null default '' CHAR(20)"`
	Bearish        int       `json:"bearish" xorm:"not null default 0 MEDIUMINT(8)"`
	Good           int       `json:"good" xorm:"not null default 0 MEDIUMINT(8)"`
	CreateTime     time.Time `json:"create_time" xorm:"index DATETIME"`
	UpdateTime     time.Time `json:"update_time" xorm:"TIMESTAMP"`
	CreateIp       string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp       string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	Grade          int       `json:"grade" xorm:"not null default 0 TINYINT(1)"`
	IsDel          int       `json:"is_del" xorm:"not null default 0 TINYINT(1)"`
}

type NewsFollow struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null default 0 INT(11)"`
	Username   string    `json:"username" xorm:"not null default '' CHAR(10)"`
	NewsId     int       `json:"news_id" xorm:"not null default 0 INT(11)"`
	Follow     int       `json:"follow" xorm:"not null default 0 TINYINT(1)"`
	Collect    int       `json:"collect" xorm:"not null default 0 TINYINT(1)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdaeTime  time.Time `json:"updae_time" xorm:"TIMESTAMP"`
	CreateIp   string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp   string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	Good       int       `json:"good" xorm:"not null default 0 TINYINT(1)"`
}

type OtcMonitor struct {
	Id       int    `json:"id" xorm:"not null pk autoincr SMALLINT(5)"`
	Platform string `json:"platform" xorm:"not null default '' CHAR(16)"`
	CoinFrom string `json:"coin_from" xorm:"not null default '' CHAR(10)"`
	CoinTo   string `json:"coin_to" xorm:"not null default '' CHAR(10)"`
	Pair     string `json:"pair" xorm:"not null default '' CHAR(16)"`
	MinPrice string `json:"min_price" xorm:"not null DECIMAL(10,2)"`
	MaxPrice string `json:"max_price" xorm:"not null DECIMAL(10,2)"`
	Status   int    `json:"status" xorm:"not null default 0 TINYINT(1)"`
}

type OtcMonitorLog struct {
	Id       int    `json:"id" xorm:"not null pk autoincr MEDIUMINT(5)"`
	Platform string `json:"platform" xorm:"not null default '' CHAR(16)"`
	Pair     string `json:"pair" xorm:"not null default '' CHAR(16)"`
	IsSend   int    `json:"is_send" xorm:"not null default 0 TINYINT(11)"`
	Content  string `json:"content" xorm:"not null default '' VARCHAR(500)"`
}

type Positions struct {
	Id            int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	CombinationId int       `json:"combination_id" xorm:"not null index(key_uid_combination_id) INT(11)"`
	Uid           int       `json:"uid" xorm:"not null index(key_uid_combination_id) INT(11)"`
	Type          int       `json:"type" xorm:"not null TINYINT(1)"`
	Coin          string    `json:"coin" xorm:"not null default '' CHAR(10)"`
	Price         string    `json:"price" xorm:"not null DECIMAL(8,2)"`
	StartNumber   string    `json:"start_number" xorm:"not null DECIMAL(20,4)"`
	EndNumber     string    `json:"end_number" xorm:"not null DECIMAL(20,4)"`
	Number        string    `json:"number" xorm:"not null DECIMAL(20,4)"`
	Percent       string    `json:"percent" xorm:"not null DECIMAL(5,2)"`
	CreateTime    time.Time `json:"create_time" xorm:"index DATETIME"`
	UpdateTime    time.Time `json:"update_time" xorm:"TIMESTAMP"`
	CreateIp      string    `json:"create_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
	UpdateIp      string    `json:"update_ip" xorm:"not null default '0.0.0.0' CHAR(15)"`
}

type ProjectAddress struct {
	Id       int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	Name     string `json:"name" xorm:"not null default '' unique CHAR(16)"`
	IsOpen   int    `json:"is_open" xorm:"not null default 1 TINYINT(1)"`
	Address  string `json:"address" xorm:"not null default '' CHAR(255)"`
	Facebook string `json:"facebook" xorm:"not null default '' CHAR(255)"`
	Twitter  string `json:"twitter" xorm:"not null default '' CHAR(255)"`
	Telegram string `json:"telegram" xorm:"not null default '' CHAR(255)"`
	Github   string `json:"github" xorm:"not null default '' CHAR(255)"`
}

type TmpKline struct {
	Id       int    `json:"id" xorm:"not null pk autoincr INT(11)"`
	Time     string `json:"time" xorm:"not null default '' index CHAR(13)"`
	Open     string `json:"open" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	High     string `json:"high" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Low      string `json:"low" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Close    string `json:"close" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Volume   string `json:"volume" xorm:"not null default 0.0000000000 DECIMAL(40,10)"`
	Datetime string `json:"datetime" xorm:"not null default '' VARCHAR(32)"`
}

type User struct {
	Uid         int       `json:"uid" xorm:"not null pk autoincr INT(11)"`
	Pid         int       `json:"pid" xorm:"not null default 0 INT(11)"`
	InviteCode  string    `json:"invite_code" xorm:"VARCHAR(24)"`
	Username    string    `json:"username" xorm:"default '' VARCHAR(24)"`
	Prefix      string    `json:"prefix" xorm:"default '' index(INDEX_UNIQUE) VARCHAR(24)"`
	Phone       string    `json:"phone" xorm:"default '' index(INDEX_UNIQUE) VARCHAR(64)"`
	Email       string    `json:"email" xorm:"default '' index(INDEX_UNIQUE) VARCHAR(64)"`
	PwdRand     string    `json:"pwd_rand" xorm:"not null VARCHAR(64)"`
	Password    string    `json:"password" xorm:"not null VARCHAR(64)"`
	RegType     int       `json:"reg_type" xorm:"not null default 1 TINYINT(2)"`
	RegPlatform string    `json:"reg_platform" xorm:"VARCHAR(24)"`
	Type        int       `json:"type" xorm:"not null default 1 TINYINT(2)"`
	Status      int       `json:"status" xorm:"not null default 1 TINYINT(2)"`
	CreateIp    string    `json:"create_ip" xorm:"CHAR(15)"`
	UpdateIp    string    `json:"update_ip" xorm:"CHAR(15)"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserAdvice struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid         int       `json:"uid" xorm:"not null INT(11)"`
	Type        int       `json:"type" xorm:"not null default 1 TINYINT(2)"`
	ContactName string    `json:"contact_name" xorm:"not null VARCHAR(24)"`
	ContactTel  string    `json:"contact_tel" xorm:"not null VARCHAR(128)"`
	Advice      string    `json:"advice" xorm:"not null VARCHAR(255)"`
	Image1      string    `json:"image_1" xorm:"VARCHAR(250)"`
	Image2      string    `json:"image_2" xorm:"VARCHAR(250)"`
	Image3      string    `json:"image_3" xorm:"VARCHAR(250)"`
	Image4      string    `json:"image_4" xorm:"VARCHAR(250)"`
	Image5      string    `json:"image_5" xorm:"VARCHAR(250)"`
	Status      int       `json:"status" xorm:"not null default 0 TINYINT(2)"`
	CreateTime  time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserConfig struct {
	Id            int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid           int       `json:"uid" xorm:"not null unique INT(11)"`
	DefaultLang   string    `json:"default_lang" xorm:"not null default 'cn' VARCHAR(24)"`
	ShareNotify   string    `json:"share_notify" xorm:"default '1' ENUM('0','1')"`
	CommentNotify string    `json:"comment_notify" xorm:"default '1' ENUM('0','1')"`
	LikeNotify    string    `json:"like_notify" xorm:"default '1' ENUM('0','1')"`
	FanNotify     string    `json:"fan_notify" xorm:"default '1' ENUM('0','1')"`
	SystemNotify  string    `json:"system_notify" xorm:"default '1' ENUM('0','1')"`
	CreateTime    time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime    time.Time `json:"update_time" xorm:"default 'CURRENT_TIMESTAMP' TIMESTAMP"`
}

type UserFollow struct {
	Id           int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid          int       `json:"uid" xorm:"not null index(index_unique) INT(11)"`
	FollowedUid  int       `json:"followed_uid" xorm:"not null index(index_unique) INT(11)"`
	FollowedBoth string    `json:"followed_both" xorm:"not null default '0' ENUM('0','1')"`
	CreateTime   time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime   time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserInfo struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null index INT(11)"`
	Nick       string    `json:"nick" xorm:"default '' VARCHAR(64)"`
	Sign       string    `json:"sign" xorm:"default '' VARCHAR(250)"`
	Sex        string    `json:"sex" xorm:"default '-1' ENUM('-1','0','1')"`
	HeadImage  string    `json:"head_image" xorm:"default '' VARCHAR(128)"`
	Qrcode     string    `json:"qrcode" xorm:"default '' VARCHAR(128)"`
	Country    string    `json:"country" xorm:"default '' VARCHAR(24)"`
	RealName   string    `json:"real_name" xorm:"default '' VARCHAR(24)"`
	IdType     int       `json:"id_type" xorm:"default 0 TINYINT(2)"`
	IdCode     string    `json:"id_code" xorm:"default '' VARCHAR(24)"`
	IsVerified string    `json:"is_verified" xorm:"default '0' ENUM('-1','0','1')"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserLogin struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid        int       `json:"uid" xorm:"not null INT(11)"`
	Platform   string    `json:"platform" xorm:"VARCHAR(24)"`
	Ip         string    `json:"ip" xorm:"not null default '' VARCHAR(24)"`
	Continent  string    `json:"continent" xorm:"VARCHAR(24)"`
	Country    string    `json:"country" xorm:"VARCHAR(24)"`
	City       string    `json:"city" xorm:"VARCHAR(24)"`
	Area       string    `json:"area" xorm:"VARCHAR(24)"`
	CreateTime time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserMessage struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid         int       `json:"uid" xorm:"INT(11)"`
	Type        string    `json:"type" xorm:"VARCHAR(24)"`
	TargetId    int       `json:"target_id" xorm:"INT(11)"`
	OpNick      string    `json:"op_nick" xorm:"VARCHAR(24)"`
	OpImage     string    `json:"op_image" xorm:"VARCHAR(128)"`
	Content     string    `json:"content" xorm:"VARCHAR(250)"`
	MomentId    int       `json:"moment_id" xorm:"INT(11)"`
	MomentImage string    `json:"moment_image" xorm:"VARCHAR(128)"`
	Moment      string    `json:"moment" xorm:"VARCHAR(250)"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserMoment struct {
	Id           int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	ParentId     int       `json:"parent_id" xorm:"default 0 INT(11)"`
	Uid          int       `json:"uid" xorm:"not null INT(11)"`
	Content      string    `json:"content" xorm:"not null default '' VARCHAR(255)"`
	Image1       string    `json:"image_1" xorm:"VARCHAR(255)"`
	Image2       string    `json:"image_2" xorm:"VARCHAR(255)"`
	Image3       string    `json:"image_3" xorm:"VARCHAR(255)"`
	Image4       string    `json:"image_4" xorm:"VARCHAR(255)"`
	Image5       string    `json:"image_5" xorm:"VARCHAR(255)"`
	Image6       string    `json:"image_6" xorm:"VARCHAR(255)"`
	Image7       string    `json:"image_7" xorm:"VARCHAR(255)"`
	Image8       string    `json:"image_8" xorm:"VARCHAR(255)"`
	Image9       string    `json:"image_9" xorm:"VARCHAR(255)"`
	LikeCount    int       `json:"like_count" xorm:"not null default 0 INT(11)"`
	CommentCount int       `json:"comment_count" xorm:"not null default 0 INT(11)"`
	ShareCount   int       `json:"share_count" xorm:"not null default 0 INT(11)"`
	ViewCount    int       `json:"view_count" xorm:"not null default 0 INT(11)"`
	Status       int       `json:"status" xorm:"not null default 1 TINYINT(2)"`
	IsDeleted    string    `json:"is_deleted" xorm:"not null default '0' ENUM('0','1')"`
	CreateTime   time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime   time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserMomentComment struct {
	Id          int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	ParentId    int       `json:"parent_id" xorm:"default 0 INT(11)"`
	ParentNick  string    `json:"parent_nick" xorm:"VARCHAR(24)"`
	MomentId    int       `json:"moment_id" xorm:"INT(11)"`
	CommentUid  int       `json:"comment_uid" xorm:"INT(11)"`
	CommentNick string    `json:"comment_nick" xorm:"VARCHAR(24)"`
	Comment     string    `json:"comment" xorm:"VARCHAR(255)"`
	IsDeleted   string    `json:"is_deleted" xorm:"default '0' ENUM('0','1')"`
	CreateTime  time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime  time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserMomentLike struct {
	Id         int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	MomentId   int       `json:"moment_id" xorm:"INT(11)"`
	Uid        int       `json:"uid" xorm:"INT(11)"`
	CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
	UpdateTime time.Time `json:"update_time" xorm:"TIMESTAMP"`
}

type UserNotice struct {
	Id                 int       `json:"id" xorm:"not null pk autoincr INT(11)"`
	Uid                int       `json:"uid" xorm:"not null unique INT(11)"`
	PushEnabled        string    `json:"push_enabled" xorm:"not null default '1' ENUM('0','1')"`
	CommentPushEnabled string    `json:"comment_push_enabled" xorm:"not null default '1' ENUM('0','1')"`
	ConcernPushEnabled string    `json:"concern_push_enabled" xorm:"not null default '1' ENUM('0','1')"`
	ArticlePushEnabled string    `json:"article_push_enabled" xorm:"not null default '1' ENUM('0','1')"`
	NewsPushEnabled    string    `json:"news_push_enabled" xorm:"not null default '1' ENUM('0','1')"`
	CreateTime         time.Time `json:"create_time" xorm:"not null DATETIME"`
	UpdateTime         time.Time `json:"update_time" xorm:"TIMESTAMP"`
}
